package aceim.app.view.page.chat;
import java.util.Collections;
import java.util.List;
import aceim.api.dataentity.Buddy;
import aceim.api.dataentity.BuddyGroup;
import aceim.app.MainActivity;
import aceim.app.R;
import aceim.app.dataentity.ProtocolResources;
import aceim.app.themeable.dataentity.ContactListItemThemeResource;
import aceim.app.utils.ViewUtils;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;
public class ChatParticipantsAdapter extends BaseExpandableListAdapter {
private final List<BuddyGroup> mParticipantGroups;
private final ProtocolResources mResources;
public ChatParticipantsAdapter(List<BuddyGroup> participantGroups, ProtocolResources resources) {
if (participantGroups != null) {
this.mParticipantGroups = participantGroups;
} else {
this.mParticipantGroups = Collections.emptyList();
}
this.mResources = resources;
}
@Override
public int getGroupCount() {
return mParticipantGroups.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return mParticipantGroups.get(groupPosition).getBuddyList().size();
}
@Override
public Object getGroup(int groupPosition) {
return mParticipantGroups.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return mParticipantGroups.get(groupPosition).getBuddyList().get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return mParticipantGroups.get(groupPosition).getId().hashCode();
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return mParticipantGroups.get(groupPosition).getBuddyList().get(childPosition).getId();
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, final ViewGroup parent) {
final BuddyGroup g = (BuddyGroup) getGroup(groupPosition);
View item;
if (convertView == null) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
item = (View) inflater.inflate(android.R.layout.simple_expandable_list_item_1, null);
} else {
item = convertView;
}
TextView text = (TextView) item.findViewById(android.R.id.text1);
text.setText(g.toString());
text.setTextSize(parent.getContext().getResources().getDimension(R.dimen.chat_participant_group_header_size));
if (g.isCollapsed()) {
((ExpandableListView) parent).collapseGroup(groupPosition);
} else {
((ExpandableListView) parent).expandGroup(groupPosition);
}
item.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
g.setCollapsed(!g.isCollapsed());
if (g.isCollapsed()) {
((ExpandableListView) parent).collapseGroup(groupPosition);
} else {
((ExpandableListView) parent).expandGroup(groupPosition);
}
}
});
return item;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, final ViewGroup parent) {
Buddy buddy = (Buddy) getChild(groupPosition, childPosition);
MainActivity activity = (MainActivity)parent.getContext();
ContactListItemThemeResource itemResource = activity.getThemesManager().getViewResources().getGridItemLayout();
View view = convertView;
if (convertView == null) {
view = itemResource.getView();
}
if (view.getTag() == null || view.getTag() != buddy) {
view.setTag(buddy);
/*view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MainActivity activity = (MainActivity) parent.getContext();
Buddy buddy = (Buddy) v.getTag();
activity.onChatRequest(buddy);
}
});
view.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
MainActivity activity = (MainActivity) parent.getContext();
Buddy buddy = (Buddy) v.getTag();
activity.onBuddyContextMenuRequest(buddy, mResources);
return true;
}
});*/
}
TextView username = (TextView) view.findViewById(itemResource.getTitleTextViewId());
username.setText(buddy.getSafeName());
ViewUtils.fillBuddyPlaceholder(parent.getContext(), buddy, view, mResources, itemResource, childPosition, groupPosition, (AbsListView) parent);
/*int size = parent.getContext().getResources().getDimensionPixelSize(R.dimen.contact_list_grid_item_size);
view.setLayoutParams(new AbsListView.LayoutParams(size, size));*/
return view;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
}